home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d971.lha / Yak / Source / popup.c < prev    next >
C/C++ Source or Header  |  1993-12-21  |  24KB  |  804 lines

  1.  
  2. /*
  3.  *  Source machine generated by GadToolsBox V2.0b
  4.  *  which is (c) Copyright 1991-1993 Jaba Development
  5.  *
  6.  *  GUI Designed by : Martin W Scott and Gaël Marziou
  7.  */
  8.  
  9.  
  10.  
  11.  
  12. #include <exec/types.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/classes.h>
  15. #include <intuition/classusr.h>
  16. #include <intuition/imageclass.h>
  17. #include <intuition/gadgetclass.h>
  18. #include <intuition/intuitionbase.h>
  19. #include <libraries/gadtools.h>
  20. #include <graphics/displayinfo.h>
  21. #include <graphics/gfxbase.h>
  22. #include <proto/exec.h>
  23. #include <proto/intuition.h>
  24. #include <proto/gadtools.h>
  25. #include <proto/graphics.h>
  26. #include <proto/locale.h>
  27. #include <proto/utility.h>
  28. #include <string.h>
  29. #include <pragmas/exec_pragmas.h>
  30. #include <pragmas/intuition_pragmas.h>
  31. #include <pragmas/gadtools_pragmas.h>
  32. #include <pragmas/graphics_pragmas.h>
  33. #include <pragmas/utility_pragmas.h>
  34.  
  35.  
  36. #include "version.h"
  37. #include "yak.h"
  38. #include "popup.h"
  39. #include "popup_fix.h"  /**** ADDED */
  40.  
  41. #define CATCOMP_NUMBERS
  42. #include "yak_locale_strings.h"
  43. extern char *getString(ULONG MsgID); 
  44.  
  45. #ifdef BETA_VERSION
  46. static UBYTE DisplayBetaRequester = TRUE;
  47. #endif
  48.  
  49.  
  50. extern struct Catalog    *Catalog;
  51.  
  52. struct Screen         *Scr = NULL;
  53. UBYTE                 *PubScreenName;
  54. APTR                   VisualInfo = NULL;
  55. struct Window         *HelpWnd = NULL;
  56. struct Window         *HotKeyWnd = NULL;
  57. struct Window         *MiscWnd = NULL;
  58. struct Gadget         *HelpGList = NULL;
  59. struct Gadget         *HotKeyGList = NULL;
  60. struct Gadget         *MiscGList = NULL;
  61. struct Menu           *HelpMenus = NULL;
  62. UWORD                  HelpZoom[4];
  63. struct Gadget         *HelpGadgets[Help_CNT];
  64. struct Gadget         *HotKeyGadgets[HotKey_CNT];
  65. struct Gadget         *MiscGadgets[Misc_CNT];
  66. UWORD                  HelpLeft = 0;
  67. UWORD                  HelpWidth = 632;
  68. UWORD                  HelpHeight = 181;
  69. UWORD                  HotKeyLeft = 0;
  70. UWORD                  HotKeyWidth = 455;
  71. UWORD                  HotKeyHeight = 150;
  72. UWORD                  MiscLeft = 0;
  73. UWORD                  MiscWidth = 400;
  74. UWORD                  MiscHeight = 65;
  75. UWORD                    WindowTop;
  76. UBYTE                 *HelpWdt = NULL;
  77. UBYTE                 *HotKeyWdt = NULL;
  78. UBYTE                 *MiscWdt = NULL;
  79. struct TextAttr       *Font, Attr;
  80. UWORD                  FontX, FontY; 
  81. UWORD                  OffX, OffY;
  82.  
  83. static BOOL GUIFirstOpening = TRUE;
  84.  
  85. UBYTE *MBMethod0Labels[4];
  86.  
  87. void InitMBMethod0Labels (void)
  88. {
  89.     MBMethod0Labels[0] = getString(NONE_STRING);
  90.     MBMethod0Labels[1] = getString(SPRITES_STRING);
  91.     MBMethod0Labels[2] = getString(COPPER_STRING);
  92.     MBMethod0Labels[3] = NULL ;
  93. }
  94.  
  95. UBYTE *Options1Labels[4];
  96.  
  97. void InitOptions1Label (void)
  98. {
  99.     Options1Labels[0] = getString(NO_SCREEN_CHANGE_STRING);
  100.     Options1Labels[1] = getString(WORKBENCH_TO_FRONT_STRING);
  101.     Options1Labels[2] = getString(DEFAULT_PUBSCR_TO_FRONT_STRING);
  102.     Options1Labels[3] = NULL ;
  103. }
  104.  
  105.  
  106. extern struct MinList Actions1List;
  107.  
  108. struct Node Actions1Nodes[] = {
  109.     &Actions1Nodes[1], ( struct Node * )&Actions1List.mlh_Head, 0, 0, NULL,
  110.     &Actions1Nodes[2], &Actions1Nodes[0], 0, 0, NULL,
  111.     &Actions1Nodes[3], &Actions1Nodes[1], 0, 0, NULL,
  112.     &Actions1Nodes[4], &Actions1Nodes[2], 0, 0, NULL,
  113.     &Actions1Nodes[5], &Actions1Nodes[3], 0, 0, NULL,
  114.     &Actions1Nodes[6], &Actions1Nodes[5], 0, 0, NULL,
  115.     &Actions1Nodes[7], &Actions1Nodes[6], 0, 0, NULL,
  116.     &Actions1Nodes[8], &Actions1Nodes[7], 0, 0, NULL,
  117.     &Actions1Nodes[9], &Actions1Nodes[8], 0, 0, NULL,
  118.     &Actions1Nodes[10], &Actions1Nodes[9], 0, 0, NULL,
  119.     &Actions1Nodes[11], &Actions1Nodes[10], 0, 0, NULL,
  120.     &Actions1Nodes[12], &Actions1Nodes[11], 0, 0, NULL,
  121.     &Actions1Nodes[13], &Actions1Nodes[12], 0, 0, NULL,
  122.     &Actions1Nodes[14], &Actions1Nodes[13], 0, 0, NULL,
  123.     &Actions1Nodes[15], &Actions1Nodes[14], 0, 0, NULL,
  124.     ( struct Node * )&Actions1List.mlh_Tail, &Actions1Nodes[14], 0, 0, NULL };
  125.  
  126. void InitActions1Nodes (void)
  127. {
  128.     Actions1Nodes[0].ln_Name  = getString(DOS_Command_ACT);
  129.     Actions1Nodes[1].ln_Name  = getString(Close_Window_ACT);
  130.     Actions1Nodes[2].ln_Name  = getString(Zip_Window_ACT);
  131.     Actions1Nodes[3].ln_Name  = getString(Shrink_Window_ACT);
  132.     Actions1Nodes[4].ln_Name  = getString(Expand_Window_ACT);
  133.     Actions1Nodes[5].ln_Name  = getString(Cycle_Windows_ACT);
  134.     Actions1Nodes[6].ln_Name  = getString(Open_Palette_ACT);
  135.     Actions1Nodes[7].ln_Name  = getString(Screen_to_Front_ACT);
  136.     Actions1Nodes[8].ln_Name  = getString(Screen_to_Back_ACT);
  137.     Actions1Nodes[9].ln_Name  = getString(Activate_Workbench_ACT);
  138.     Actions1Nodes[10].ln_Name  = getString(Centre_Screen_ACT);
  139.     Actions1Nodes[11].ln_Name = getString(Blank_Display_ACT);
  140.     Actions1Nodes[12].ln_Name = getString(Insert_Text_ACT);
  141.     Actions1Nodes[13].ln_Name = getString(Insert_Date_ACT);
  142.     Actions1Nodes[14].ln_Name = getString(Show_Yak_Interface_ACT);
  143.     Actions1Nodes[15].ln_Name  = getString(Back_Cycle_Windows_ACT);
  144. }
  145.  
  146. struct MinList Actions1List = {
  147.     ( struct MinNode * )&Actions1Nodes[0], 
  148.     ( struct MinNode * )NULL, 
  149.     ( struct MinNode * )&Actions1Nodes[14] };
  150.  
  151. struct IntuiText HelpIText[] = {
  152.     2, 0, JAM1,40, 11, NULL, NULL, NULL,
  153.     2, 0, JAM1,84, 93, NULL, NULL, NULL,
  154.     2, 0, JAM1,488, 85, NULL, NULL, NULL };
  155.  
  156.  
  157. #define Help_TNUM 3
  158.  
  159. void InitHelpIText (void)
  160. {
  161.    HelpIText[0].IText = getString(TOGGLES_STRING);
  162.    HelpIText[1].IText = getString(INCLUSION_PATTERNS_STRING);
  163.    HelpIText[2].IText = getString(TIMEOUT_STRING);
  164. }
  165.  
  166. struct NewMenu HelpNewMenu[] = {
  167.     NM_TITLE, NULL, NULL, 0, NULL, NULL,
  168.     NM_ITEM, NULL, NULL, 0, 0L, NULL,
  169.     NM_ITEM, NULL, NULL, 0, 0L, NULL,
  170.     NM_ITEM, NULL, NULL, 0, 0L, NULL,
  171.     NM_ITEM, NULL, NULL, 0, 0L, NULL,
  172.     NM_ITEM, NULL, NULL, 0, NULL, NULL,
  173.     NM_SUB, NULL, NULL, 0, 0L, NULL,
  174.     NM_SUB, NULL, NULL, 0, 0L, NULL,
  175.     NM_SUB, NULL, NULL, 0, 0L, NULL,
  176.     NM_SUB, NULL, NULL, 0, 0L, NULL,
  177.     NM_SUB, NULL, NULL, 0, 0L, NULL,    
  178.     NM_END, NULL, NULL, 0, 0L, NULL };
  179.  
  180. void InitHelpNewMenu (void)
  181. {
  182.     HelpNewMenu[0].nm_Label   = (STRPTR)getString(PROJECT_STRING);
  183.     HelpNewMenu[1].nm_Label   = (STRPTR)getString(LOAD_SETTINGS_STRING);
  184.     HelpNewMenu[1].nm_CommKey = (STRPTR)getString(LOAD_SHORTCUT);
  185.     HelpNewMenu[2].nm_Label   = (STRPTR)getString(SAVE_SETTINGS_STRING);
  186.     HelpNewMenu[2].nm_CommKey = (STRPTR)getString(SAVE_SHORTCUT);
  187.     HelpNewMenu[3].nm_Label   = (STRPTR)getString(HIDE_WINDOW_STRING);
  188.     HelpNewMenu[3].nm_CommKey = (STRPTR)getString(HIDE_SHORTCUT);
  189.     HelpNewMenu[4].nm_Label   = (STRPTR)getString(QUIT_STRING);
  190.     HelpNewMenu[4].nm_CommKey = (STRPTR)getString(QUIT_SHORTCUT);
  191.     HelpNewMenu[5].nm_Label   = (STRPTR)getString(Credits_STRING);
  192.     HelpNewMenu[6].nm_Label   = (STRPTR)getString(Credits_Line1_STRING);
  193.     HelpNewMenu[7].nm_Label   = (STRPTR)getString(Credits_Line2_STRING);
  194.     HelpNewMenu[8].nm_Label   = (STRPTR)getString(Credits_Line3_STRING);
  195.     HelpNewMenu[9].nm_Label   = (STRPTR)getString(Credits_Line4_STRING);
  196.     HelpNewMenu[10].nm_Label  = (STRPTR)getString(Credits_Line5_STRING);
  197. }
  198.  
  199. UWORD HelpGTypes[] = {
  200.     BUTTON_KIND,
  201.     BUTTON_KIND,
  202.     CHECKBOX_KIND,
  203.     CHECKBOX_KIND,
  204.     CHECKBOX_KIND,
  205.     CHECKBOX_KIND,
  206.     CHECKBOX_KIND,
  207.     CHECKBOX_KIND,
  208.     CHECKBOX_KIND,
  209.     CHECKBOX_KIND,
  210.     CHECKBOX_KIND,
  211.     BUTTON_KIND,
  212.     BUTTON_KIND,
  213.     STRING_KIND,
  214.     STRING_KIND,
  215.     STRING_KIND,
  216.     STRING_KIND,
  217.     INTEGER_KIND,
  218.     INTEGER_KIND,
  219.     CHECKBOX_KIND,
  220.     CHECKBOX_KIND,
  221. };
  222.  
  223. UWORD HotKeyGTypes[] = {
  224.     LISTVIEW_KIND,
  225.     LISTVIEW_KIND,
  226.     STRING_KIND,
  227.     STRING_KIND,
  228.     CYCLE_KIND,
  229.     BUTTON_KIND,
  230.     BUTTON_KIND,
  231.     BUTTON_KIND
  232. };
  233.  
  234. UWORD MiscGTypes[] = {
  235.     CYCLE_KIND,
  236.     INTEGER_KIND,
  237.     INTEGER_KIND,
  238.     BUTTON_KIND
  239. };
  240.  
  241. struct NewGadget HelpNGad[] = {
  242.     450, 161, 89, 18, NULL, NULL, GD_Hide, PLACETEXT_IN, NULL, NULL,
  243.     542, 161, 86, 18, NULL, NULL, GD_Quit, PLACETEXT_IN, NULL, NULL,
  244.     12, 30, 26, 11, NULL, NULL, GD_AutoCheck, PLACETEXT_RIGHT, NULL, NULL,
  245.     12, 52, 26, 11, NULL, NULL, GD_KeyActCheck, PLACETEXT_RIGHT, NULL, NULL,
  246.     12, 63, 26, 11, NULL, NULL, GD_CTFCheck, PLACETEXT_RIGHT, NULL, NULL,
  247.     12, 74, 26, 11, NULL, NULL, GD_CTBCheck, PLACETEXT_RIGHT, NULL, NULL,
  248.     213, 42, 26, 11, NULL, NULL, GD_ScrCycleCheck, PLACETEXT_RIGHT, NULL, NULL,
  249.     213, 64, 26, 11, NULL, NULL, GD_WildStarCheck, PLACETEXT_RIGHT, NULL, NULL,
  250.     213, 53, 26, 11, NULL, NULL, GD_ScrActCheck, PLACETEXT_RIGHT, NULL, NULL,
  251.     12, 41, 26, 11, NULL, NULL, GD_AutoPopCheck, PLACETEXT_RIGHT, NULL, NULL,
  252.     213, 31, 26, 11, NULL, NULL, GD_RMBActCheck, PLACETEXT_RIGHT, NULL, NULL,
  253.     450, 123, 179, 18, NULL, NULL, GD_Miscellaneous, PLACETEXT_IN, NULL, NULL,
  254.     450, 142, 179, 18, NULL, NULL, GD_EditHotkeys, PLACETEXT_IN, NULL, NULL,
  255.     225, 116, 215, 12, NULL, NULL, GD_AutoPat, PLACETEXT_LEFT, NULL, NULL,
  256.     225, 128, 215, 12, NULL, NULL, GD_ClickPat, PLACETEXT_LEFT, NULL, NULL,
  257.     225, 150, 215, 12, NULL, NULL, GD_PopPat, PLACETEXT_LEFT, NULL, NULL,
  258.     225, 162, 215, 12, NULL, NULL, GD_ClickWinPat, PLACETEXT_LEFT, NULL, NULL,
  259.     577, 17, 44, 12, NULL, NULL, GD_ScrTONum, PLACETEXT_LEFT, NULL, NULL,
  260.     577, 29, 44, 12, NULL, NULL, GD_MouseTONum, PLACETEXT_LEFT, NULL, NULL,
  261.     213, 75, 26, 11, NULL, NULL, GD_NoClickCheck, PLACETEXT_RIGHT, NULL, NULL,    
  262.     213, 20, 26, 11, NULL, NULL, GD_MMBActCheck, PLACETEXT_RIGHT, NULL, NULL
  263. };
  264.  
  265. void InitHelpNGad (void)
  266. {
  267.     HelpNGad[GD_Hide].ng_GadgetText = getString(HIDE_STRING);
  268.     HelpNGad[GD_Quit].ng_GadgetText = getString(QUIT_STRING);
  269.     HelpNGad[GD_AutoCheck].ng_GadgetText = getString(AUTOPOINT_STRING);
  270.     HelpNGad[GD_KeyActCheck].ng_GadgetText = getString(KEY_ACTIVATE_STRING);
  271.     HelpNGad[GD_CTFCheck].ng_GadgetText = getString(CLICK_TO_FRONT_STRING);
  272.     HelpNGad[GD_CTBCheck].ng_GadgetText = getString(CLICK_TO_BACK_STRING);
  273.     HelpNGad[GD_ScrCycleCheck].ng_GadgetText = getString(CYCLE_SCREENS_STRING);
  274.     HelpNGad[GD_WildStarCheck].ng_GadgetText = getString(WILD_STAR_STRING);
  275.     HelpNGad[GD_ScrActCheck].ng_GadgetText = getString(SCREEN_ACTIVATE_STRING);
  276.     HelpNGad[GD_AutoPopCheck].ng_GadgetText = getString(AUTOPOPTOFRONT_STRING);
  277.     HelpNGad[GD_RMBActCheck].ng_GadgetText = getString(RMB_ACTIVATE_STRING);
  278.     HelpNGad[GD_Miscellaneous].ng_GadgetText = getString(MISCELLANEOUS_STRING);
  279.     HelpNGad[GD_EditHotkeys].ng_GadgetText = getString(EDIT_HOTKEYS_STRING);
  280.     HelpNGad[GD_AutoPat].ng_GadgetText = getString(AUTOSCREENS_STRING);
  281.     HelpNGad[GD_ClickPat].ng_GadgetText = getString(CLICKSCREENS_STRING);
  282.     HelpNGad[GD_PopPat].ng_GadgetText = getString(POPWINDOWS_STRING);
  283.     HelpNGad[GD_ClickWinPat].ng_GadgetText = getString(CLICKWINDOWS_STRING);
  284.     HelpNGad[GD_ScrTONum].ng_GadgetText = getString(SCREENTIMEOUT_STRING);
  285.     HelpNGad[GD_MouseTONum].ng_GadgetText = getString(MOUSETIMEOUT_STRING);
  286.     HelpNGad[GD_NoClickCheck].ng_GadgetText = getString(NOCLICK_STRING);
  287.     HelpNGad[GD_MMBActCheck].ng_GadgetText = getString(MMB_ACTIVATE_STRING);
  288. }
  289.  
  290. struct NewGadget HotKeyNGad[] = {
  291.     225, 19, 214, 64, NULL, NULL, GD_Hotkeys, PLACETEXT_ABOVE|NG_HIGHLABEL, NULL, NULL,
  292.     16, 19, 189, 88, NULL, NULL, GD_Actions, PLACETEXT_ABOVE|NG_HIGHLABEL, NULL, NULL,
  293.     225, 80, 214, 13, NULL, NULL, GD_HKStr, 0, NULL, NULL,
  294.     96, 117, 223, 13, NULL, NULL, GD_Argument, PLACETEXT_LEFT, NULL, NULL,
  295.     96, 131, 223, 13, NULL, NULL, GD_Options, PLACETEXT_LEFT, NULL, NULL,
  296.     225, 94, 106, 13, NULL, NULL, GD_Add, PLACETEXT_IN, NULL, NULL,
  297.     333, 94, 106, 13, NULL, NULL, GD_Delete, PLACETEXT_IN, NULL, NULL,
  298.     339, 117, 100, 27, NULL, NULL, GD_Return, PLACETEXT_IN, NULL, NULL
  299. };
  300.  
  301. void InitHotKeyNGad (void)
  302. {
  303.     HotKeyNGad[GD_Hotkeys].ng_GadgetText = getString(HOTKEYS_STRING);
  304.     HotKeyNGad[GD_Actions].ng_GadgetText = getString(ACTIONS_STRING);
  305.     HotKeyNGad[GD_Argument].ng_GadgetText = getString(ARGUMENT_STRING);
  306.     HotKeyNGad[GD_Options].ng_GadgetText = getString(OPTIONS_STRING);
  307.     HotKeyNGad[GD_Add].ng_GadgetText = getString(ADD_STRING);
  308.     HotKeyNGad[GD_Delete].ng_GadgetText = getString(DELETE_STRING);
  309.     HotKeyNGad[GD_Return].ng_GadgetText = getString(RETURN_STRING);
  310. }
  311.  
  312.  
  313. struct NewGadget MiscNGad[] = {
  314.     6, 15, 153, 15, NULL, NULL, GD_MBMethod, PLACETEXT_ABOVE, NULL, NULL,
  315.     353, 10, 44, 12, NULL, NULL, GD_ClickVol, PLACETEXT_LEFT, NULL, NULL,
  316.     353, 25, 44, 12, NULL, NULL, GD_AutoPointDelay, PLACETEXT_LEFT, NULL, NULL,
  317.     298, 47, 100, 15, NULL, NULL, GD_Return2, PLACETEXT_IN, NULL, NULL
  318. };
  319.  
  320. void InitMiscNGad (void)
  321. {
  322.     MiscNGad[GD_MBMethod].ng_GadgetText = getString(MOUSEBLANK_METHOD_STRING);
  323.     MiscNGad[GD_ClickVol].ng_GadgetText = getString(CLICKVOLUME_STRING);
  324.     MiscNGad[GD_AutoPointDelay].ng_GadgetText = getString(AUTOPOINT_DELAY_STRING);
  325.     MiscNGad[GD_Return2].ng_GadgetText = getString(RETURN_STRING);
  326. }
  327.  
  328. void InitGUI (void)
  329. {
  330.     static char title[80];
  331.  
  332. #ifdef BETA_VERSION
  333.     if (DisplayBetaRequester == TRUE)
  334.     {
  335.         PostError("This is " VERSION_NAME " beta version");
  336.         DisplayBetaRequester = FALSE;
  337.     }
  338. #endif
  339.  
  340.     strcpy(title, VERSION_NAME ": ");
  341.     strcat(title, getString(Hotkey_Window_TITLE));
  342.     strcat(title, PopKeyStr);
  343.     strcat(title, ">");
  344.     HelpWdt = title;
  345.  
  346.     HotKeyWdt = getString(EDIT_HOTKEYS_STRING);
  347.  
  348.     MiscWdt = getString(MISCELLANEOUS_STRING);
  349.  
  350.     InitOptions1Label ();
  351.     InitHelpIText ();
  352.     InitHelpNewMenu ();
  353.     InitHelpNGad ();
  354.     InitActions1Nodes ();
  355.     InitHotKeyNGad ();
  356.     InitMBMethod0Labels ();
  357.     InitMiscNGad ();
  358. }
  359.  
  360.  
  361. ULONG HelpGTags[] = {
  362.     (TAG_DONE),
  363.     (TAG_DONE),
  364.     (TAG_DONE),
  365.     (TAG_DONE),
  366.     (TAG_DONE),
  367.     (TAG_DONE),
  368.     (TAG_DONE),
  369.     (TAG_DONE),
  370.     (TAG_DONE),
  371.     (TAG_DONE),
  372.     (TAG_DONE),
  373.     (TAG_DONE),
  374.     (TAG_DONE),
  375.     (GTST_MaxChars), 99, (TAG_DONE),
  376.     (GTST_MaxChars), 99, (TAG_DONE),
  377.     (GTST_MaxChars), 99, (TAG_DONE),
  378.     (GTST_MaxChars), 99, (TAG_DONE),
  379.     (GTIN_Number), 0, (GTIN_MaxChars), 4, (TAG_DONE),
  380.     (GTIN_Number), 0, (GTIN_MaxChars), 4, (TAG_DONE),
  381.     (TAG_DONE),
  382.     (TAG_DONE),
  383. };
  384.  
  385. ULONG HotKeyGTags[] = {
  386.     (GT_Underscore), '_', (TAG_DONE),
  387.     (GTLV_Labels), (ULONG)&Actions1List, (GTLV_ShowSelected), NULL, (GT_Underscore), '_', (TAG_DONE),
  388.     (GTST_MaxChars), 256, (TAG_DONE),
  389.     (GTST_MaxChars), 512, (GT_Underscore), '_', (TAG_DONE),
  390.     (GTCY_Labels), (ULONG)&Options1Labels[ 0 ], (GT_Underscore), '_', (TAG_DONE),
  391.     (GT_Underscore), '_', (TAG_DONE),
  392.     (GT_Underscore), '_', (TAG_DONE),
  393.     (GT_Underscore), '_', (TAG_DONE)
  394. };
  395.  
  396. ULONG MiscGTags[] = {
  397.     (GTCY_Labels), (ULONG)&MBMethod0Labels[ 0 ], (TAG_DONE),
  398.     (GTIN_Number), 0, (GTIN_MaxChars), 4, (TAG_DONE),
  399.     (GTIN_Number), 0, (GTIN_MaxChars), 4, (TAG_DONE),
  400.     (GT_Underscore), '_', (TAG_DONE)
  401. };
  402.  
  403. static UWORD ComputeX( UWORD value )
  404. {
  405.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  406. }
  407.  
  408. static UWORD ComputeY( UWORD value )
  409. {
  410.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  411. }
  412.  
  413. static void ComputeFont( UWORD width, UWORD height )
  414. {
  415.     Font = &Attr;
  416.     Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name;
  417.     Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize;
  418.  
  419. /*    FontX = Scr->RastPort.Font->tf_XSize; */ 
  420. /**** ADDED NEXT LINE */
  421.     FontX = CalcFontX();
  422.  
  423.     /* Don't go under 8 points */
  424.     if (FontY < 8) FontY = 8;
  425.  
  426.     OffX = Scr->WBorLeft;
  427.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  428.  
  429.     if ( width && height ) {
  430.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  431.         goto UseTopaz;
  432.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  433.         goto UseTopaz;
  434.     }
  435.     return;
  436.  
  437. UseTopaz:
  438.     Font->ta_Name = (STRPTR)"topaz.font";
  439.     FontX = FontY = Font->ta_YSize = 8;
  440. }
  441.  
  442. int SetupScreen( void )
  443. {
  444.     struct Screen *s;
  445.     ULONG lock;
  446.     struct PubScreenNode *psnode; 
  447.  
  448.     /* Choose a public screen to open our window */
  449.     lock = LockIBase(0);
  450.     s = IntuitionBase->ActiveScreen; 
  451.     UnlockIBase(lock);
  452.   
  453.     PubScreenName = NULL;
  454.     if ( s->Flags & WBENCHSCREEN )
  455.     {
  456.         PubScreenName = "Workbench" ;
  457.     }
  458.     else
  459.     {
  460.         if ( s->Flags & PUBLICSCREEN )
  461.         {
  462.             /* s is a public screen so find its name */
  463.  
  464.             psnode=(struct PubScreenNode *)LockPubScreenList();
  465.  
  466.             while ((psnode) && !(PubScreenName))
  467.             {
  468.                 if ((psnode->psn_Flags != PSNF_PRIVATE) && (psnode->psn_Screen == s)) 
  469.                 {
  470.                     /* found it */
  471.                     PubScreenName = psnode->psn_Node.ln_Name;
  472.                 }
  473.                 else
  474.                 {    
  475.                     /* check next one */
  476.                     psnode = (struct PubScreenNode *)psnode->psn_Node.ln_Succ;
  477.                 }
  478.             }
  479.  
  480.             UnlockPubScreenList();                
  481.         }
  482.     }
  483.  
  484.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  485.         return( 1L );
  486.  
  487.     ScreenToFront(Scr);
  488.  
  489.     ComputeFont( 0, 0 );
  490.  
  491.     if (GUIFirstOpening)
  492.     {
  493.         GUIFirstOpening = FALSE;
  494.         WindowTop = Scr->BarHeight + 1 ;
  495.     };
  496.  
  497.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  498.         return( 2L );
  499.  
  500.     return( 0L );
  501. }
  502.  
  503. void CloseDownScreen( void )
  504. {
  505.     if ( VisualInfo ) {
  506.         FreeVisualInfo( VisualInfo );
  507.         VisualInfo = NULL;
  508.     }
  509.  
  510.     if ( Scr        ) {
  511.         UnlockPubScreen( NULL, Scr );
  512.         Scr = NULL;
  513.     }
  514. }
  515.  
  516. void HelpRender( void )
  517. {
  518.     UWORD            cnt;
  519.     UWORD X,Y;
  520.  
  521.     ComputeFont( HelpWidth, HelpHeight );
  522.  
  523.     /* TimeOut Box */
  524.     X = OffX + ComputeX( 449 );
  525.     Y = OffY + ComputeY( 3 );
  526.     DrawBevelBox( HelpWnd->RPort, X, Y,
  527.                     ComputeX( 180 ),
  528.                     ComputeY( 42 ),
  529.                     GT_VisualInfo, VisualInfo, TAG_DONE );
  530.     HelpIText[ 2 ].LeftEdge  = X + 4;
  531.     HelpIText[ 2 ].TopEdge   = Y + 3;
  532.  
  533.     /* Inclusion Patterns box */
  534.     X = OffX + ComputeX( 5 );
  535.     Y = OffY + ComputeY( 97 );
  536.     DrawBevelBox( HelpWnd->RPort, X, Y,
  537.                  ComputeX( 441 ),
  538.                  ComputeY( 83 ),
  539.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  540.     HelpIText[ 1 ].LeftEdge  = X + 4;
  541.     HelpIText[ 1 ].TopEdge   = Y + 3;
  542.  
  543.     /* Toggles box */
  544.     X = OffX + ComputeX( 4 );
  545.     Y = OffY + ComputeY( 3 );
  546.     DrawBevelBox( HelpWnd->RPort, X, Y,
  547.                  ComputeX( 442 ),
  548.                  ComputeY( 93 ),
  549.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  550.     HelpIText[ 0 ].LeftEdge  = X + 4;
  551.     HelpIText[ 0 ].TopEdge   = Y + 3;
  552.  
  553.     for ( cnt = 0; cnt < Help_TNUM; cnt++ ) {
  554.         HelpIText[ cnt ].ITextFont = Font;
  555.         PrintIText( HelpWnd->RPort, &HelpIText[ cnt ], 0, 0 );    
  556.     }
  557.  
  558. }
  559.  
  560.  
  561. int OpenHelpWindow( void )
  562. {
  563.     struct NewGadget    ng;
  564.     struct Gadget    *g;
  565.     UWORD        lc, tc;
  566.     UWORD        wleft = HelpLeft, wtop = WindowTop, ww, wh;
  567.  
  568.     ComputeFont( HelpWidth, HelpHeight );
  569.  
  570.     ww = ComputeX( HelpWidth );
  571.     wh = ComputeY( HelpHeight );
  572.  
  573.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  574.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  575.  
  576.     if ( ! ( g = CreateContext( &HelpGList )))
  577.         return( 1L );
  578.  
  579.     for( lc = 0, tc = 0; lc < Help_CNT; lc++ ) {
  580.  
  581.         CopyMem((char * )&HelpNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  582.  
  583.         ng.ng_VisualInfo = VisualInfo;
  584.         ng.ng_TextAttr   = Font;
  585.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  586.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  587.         ng.ng_Width      = ComputeX( ng.ng_Width );
  588.         ng.ng_Height     = ComputeY( ng.ng_Height);
  589.  
  590.         HelpGadgets[ lc ] = g = CreateGadgetA((ULONG)HelpGTypes[ lc ], g, &ng, ( struct TagItem * )&HelpGTags[ tc ] );
  591.  
  592.         while( HelpGTags[ tc ] ) tc += 2;
  593.         tc++;
  594.  
  595.         if ( NOT g )
  596.             return( 2L );
  597.     }
  598.  
  599.     /**** CHANGED */
  600.     if ( ! ( HelpMenus = CreateMenus( HelpNewMenu, GTMN_NewLookMenus, 
  601.                                      TRUE, 0L, 
  602.                                      TAG_DONE )))
  603.         return( 3L );
  604.  
  605.     LayoutMenus( HelpMenus, VisualInfo, GTMN_NewLookMenus, TRUE, TAG_DONE );
  606.  
  607.         HelpZoom[0] = HelpZoom[1] = 0;
  608.     if ( HelpWdt )
  609.         HelpZoom[2] = TextLength( &Scr->RastPort, (UBYTE *)HelpWdt, strlen((char *)HelpWdt )) + 80;
  610.     else
  611.         HelpZoom[2]  = 80L;
  612.         HelpZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  613.  
  614.     if ( ! ( HelpWnd = OpenWindowTags( NULL,
  615.                 WA_Left,    wleft,
  616.                 WA_Top,        wtop,
  617.                 WA_Width,    ww + OffX + Scr->WBorRight,
  618.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  619.                 WA_IDCMP,    BUTTONIDCMP|CHECKBOXIDCMP|CYCLEIDCMP|STRINGIDCMP|INTEGERIDCMP|IDCMP_GADGETDOWN|IDCMP_INTUITICKS|IDCMP_MOUSEMOVE|IDCMP_MOUSEBUTTONS|
  620.                         
  621.                         IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|
  622.                         
  623.                         
  624.                         IDCMP_CHANGEWINDOW|IDCMP_REFRESHWINDOW,
  625.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  626.                 WA_Gadgets,    HelpGList,
  627.                 WA_Title,    HelpWdt,
  628.                 WA_ScreenTitle,    getString(COPYRIGHT_STRING),
  629.                 WA_Zoom,    HelpZoom,
  630.                 WA_AutoAdjust,    TRUE,
  631. /**** ADDED */                  
  632.                 WA_NewLookMenus,TRUE,
  633.                 WA_PubScreen, TRUE,
  634.                 WA_PubScreenName, PubScreenName,
  635.                 TAG_DONE )))
  636.     return( 4L );
  637.  
  638.     SetMenuStrip( HelpWnd, HelpMenus );
  639.     GT_RefreshWindow( HelpWnd, NULL );
  640.  
  641.     HelpRender();
  642.  
  643.     return( 0L );
  644. }
  645.  
  646. void CloseOneWindow( struct Window *Wnd, struct Menu *Menus, struct Gadget *GList )
  647. {
  648.     if ( Menus ) 
  649.     {
  650.         ClearMenuStrip( Wnd );
  651.         FreeMenus( Menus );
  652.     }
  653.  
  654.     if ( Wnd ) 
  655.     {
  656.         CloseWindow( Wnd );
  657.     }
  658.  
  659.     if ( GList      ) {
  660.         FreeGadgets( GList );
  661.     }
  662. }
  663.  
  664. void CloseHelpWindow( void )
  665. {
  666.     CloseOneWindow (HelpWnd, HelpMenus, HelpGList);
  667. }
  668.  
  669. int OpenHotKeyWindow( void )
  670. {
  671.     struct NewGadget    ng;
  672.     struct Gadget    *g;
  673.     UWORD        lc, tc;
  674.     UWORD        wleft = HotKeyLeft, wtop = WindowTop, ww, wh;
  675.  
  676.     ComputeFont( HotKeyWidth, HotKeyHeight );
  677.  
  678.     ww = ComputeX( HotKeyWidth );
  679.     wh = ComputeY( HotKeyHeight );
  680.  
  681.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  682.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  683.  
  684.     if ( ! ( g = CreateContext( &HotKeyGList )))
  685.         return( 1L );
  686.  
  687.     for( lc = 0, tc = 0; lc < HotKey_CNT; lc++ ) {
  688.  
  689.         CopyMem((char * )&HotKeyNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  690.  
  691.         ng.ng_VisualInfo = VisualInfo;
  692.         ng.ng_TextAttr   = Font;
  693.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  694.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  695.         ng.ng_Width      = ComputeX( ng.ng_Width );
  696.         ng.ng_Height     = ComputeY( ng.ng_Height);
  697.  
  698.         HotKeyGadgets[ lc ] = g = CreateGadgetA((ULONG)HotKeyGTypes[ lc ], g, &ng, ( struct TagItem * )&HotKeyGTags[ tc ] );
  699.  
  700.         while( HotKeyGTags[ tc ] ) tc += 2;
  701.         tc++;
  702.  
  703.         if ( NOT g )
  704.             return( 2L );
  705.     }
  706.  
  707.     if ( ! ( HotKeyWnd = OpenWindowTags( NULL,
  708.                 WA_Left,    wleft,
  709.                 WA_Top,        wtop,
  710.                 WA_Width,    ww + OffX + Scr->WBorRight,
  711.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  712.                 WA_IDCMP,    LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  713.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  714.                 WA_Gadgets,    HotKeyGList,
  715.                 WA_Title,    HotKeyWdt,
  716.                 WA_ScreenTitle, getString(COPYRIGHT_STRING),
  717.                 WA_PubScreen, TRUE,
  718.                 WA_PubScreenName, PubScreenName,
  719.                 TAG_DONE )))
  720.     return( 4L );
  721.  
  722.     GT_RefreshWindow( HotKeyWnd, NULL );
  723.  
  724.     return( 0L );
  725. }
  726.  
  727. void CloseHotKeyWindow( void )
  728. {
  729.     CloseOneWindow (HotKeyWnd, NULL, HotKeyGList);
  730. }
  731.  
  732.  
  733. int OpenMiscWindow( void )
  734. {
  735.     struct NewGadget    ng;
  736.     struct Gadget    *g;
  737.     UWORD        lc, tc;
  738.     UWORD        wleft = MiscLeft, wtop = WindowTop, ww, wh;
  739.  
  740.     ComputeFont( MiscWidth, MiscHeight );
  741.  
  742.     ww = ComputeX( MiscWidth );
  743.     wh = ComputeY( MiscHeight );
  744.  
  745.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  746.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  747.  
  748.     if ( ! ( g = CreateContext( &MiscGList ))) 
  749.     {
  750.         return( 1L );
  751.     }
  752.  
  753.     for( lc = 0, tc = 0; lc < Misc_CNT; lc++ ) {
  754.  
  755.         CopyMem((char * )&MiscNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  756.  
  757.         ng.ng_VisualInfo = VisualInfo;
  758.         ng.ng_TextAttr   = Font;
  759.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  760.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  761.         ng.ng_Width      = ComputeX( ng.ng_Width );
  762.         ng.ng_Height     = ComputeY( ng.ng_Height);
  763.  
  764.         MiscGadgets[ lc ] = g = CreateGadgetA((ULONG)MiscGTypes[ lc ], g, &ng, ( struct TagItem * ) &MiscGTags[ tc ] );
  765.  
  766.         while( MiscGTags[ tc ] ) tc += 2;
  767.         tc++;
  768.  
  769.         if ( NOT g )
  770.             return( 2L );
  771.     }
  772.  
  773.     if ( ! ( MiscWnd = OpenWindowTags( NULL,
  774.                 WA_Left,    wleft,
  775.                 WA_Top,        wtop,
  776.                 WA_Width,    ww + OffX + Scr->WBorRight,
  777.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  778.                 WA_IDCMP,    LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  779.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  780.                 WA_Gadgets,    MiscGList,
  781.                 WA_Title,    MiscWdt,
  782.                 WA_ScreenTitle, getString(COPYRIGHT_STRING),
  783.                 WA_PubScreen, TRUE,
  784.                 WA_PubScreenName, PubScreenName,
  785.                 TAG_DONE )))
  786.     return( 4L );
  787.  
  788.     GT_RefreshWindow( MiscWnd, NULL );
  789.  
  790.     return( 0L );
  791. }
  792.  
  793.  
  794.  
  795.  
  796. void CloseMiscWindow( void )
  797. {
  798.     CloseOneWindow (MiscWnd, NULL, MiscGList);
  799. }
  800.  
  801.  
  802.  
  803.  
  804.